package ar.com.seminario.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import ar.com.seminario.common.service.exception.ServiceException;
import ar.com.seminario.dto.EntrevistaRRHHDto;
import ar.com.seminario.dto.EntrevistaSuperiorDto;
import ar.com.seminario.dto.EntrevistaTecnicaDto;
import ar.com.seminario.model.Entrevista;
import ar.com.seminario.service.IEntrevistaService;

/**
 * Controller para el manejo de entrevistas.
 * 
 * @author Pablo Lamas
 * 
 */
@Controller
public class EntrevistasController extends GenericController{

	/**
	 * Logger del controller.
	 */
	private static final Logger LOG = LoggerFactory.getLogger(EntrevistasController.class);
	
	/**
	 * Servicio de acceso a {@link Entrevista}.
	 */
	@Autowired
	private IEntrevistaService entrevistaService;
	
	/**
	 * Despliega la pantalla de administrar entrevistas.
	 */
	@RequestMapping(value = "/administrarEntrevistas", method = RequestMethod.GET)
	public final ModelAndView getPageAdministrarEntrevistas(final ModelMap model, HttpServletRequest request) {

		try {

			this.getStartModel(model, request);

		} catch (final Exception e) {
			EntrevistasController.LOG.error("Error creando el Dto de datos de la pagina.");
		}

		return (new ModelAndView("administrar-entrevistas", model));

	}
	
	/**
	 * Guarda el formulario de la entrevista de RRHH.
	 */
	@RequestMapping(value = "/guardarEntrevistaRRHH", method = RequestMethod.POST)
	@ResponseBody
	public final String saveEntrevistaRRHH(
			@ModelAttribute("EntrevistaRRHHDto") EntrevistaRRHHDto entrevistaRRHHDto, ModelMap model,
			HttpServletResponse response) {

		String respuesta = new String("");

		//try {

			//this.entrevistaService.saveEntrevistaRRHH(entrevistaRRHHDto);
			respuesta = this.armarRespuesta(true, "Los datos de la entrevista fueron guardados con exito");

		//} catch (ServiceException e) {
		//	respuesta = this.armarRespuesta(false, "Error guardando los datos de la pagina. Por favor, intentelo nuevamente.");
		//}

		return respuesta;
	}
	
	/**
	 * Guarda el formulario de la entrevista Tecnica.
	 */
	@RequestMapping(value = "/guardarEntrevistaTecnica", method = RequestMethod.POST)
	@ResponseBody
	public final String saveEntrevistaTecnica(
			@ModelAttribute("EntrevistaTecnicaDto") EntrevistaTecnicaDto entrevistaTecnicaDto, ModelMap model,
			HttpServletResponse response) {

		String respuesta = new String("");

		try {

			this.entrevistaService.saveEntrevistaTecnica(entrevistaTecnicaDto);
			respuesta = this.armarRespuesta(true, "Los datos de la entrevista fueron guardados con exito");

		} catch (ServiceException e) {
			respuesta = this.armarRespuesta(false, "Error guardando los datos de la pagina. Por favor, intentelo nuevamente.");
		}

		return respuesta;
	}
	
	/**
	 * Guarda el formulario de la entrevista Tecnica.
	 */
	@RequestMapping(value = "/guardarEntrevistaSuperior", method = RequestMethod.POST)
	@ResponseBody
	public final String saveEntrevistaSuperior(
			@ModelAttribute("EntrevistaSuperiorDto") EntrevistaSuperiorDto entrevistaSuperiorDto, ModelMap model,
			HttpServletResponse response) {

		String respuesta = new String("");

		try {

			this.entrevistaService.saveEntrevistaSuperior(entrevistaSuperiorDto);
			respuesta = this.armarRespuesta(true, "Los datos de la entrevista fueron guardados con exito");

		} catch (ServiceException e) {
			respuesta = this.armarRespuesta(false, "Error guardando los datos de la pagina. Por favor, intentelo nuevamente.");
		}

		return respuesta;
	}
	
}
